/*************************************************************************
*  Mainfile for the ATmega8
*
*  contact: sebastian.trommer@gmail.com
*  homepage: wiki.car2.de
*
*	description:
*	Mainfile for the ATmega8 in the iPod2AIR circuit
*
*  Revision History
*
*	when        what  who	why
*
*	2009-01-05	0.00  TSE	initial release
*	2009-01-07	0.01  TSE	aufbau der RDS-Takt Routinen
*	2009-01-28	0.02  TSE	umstrukturierung RDS-Tick TWI Slave implementiert
*	2009-01-29	0.03  TSE	implementierung Pruefwortberechnung
*	2009-02-02	0.04  TSE	RDS Out functions work, just ptr_text need to be looked at
*	2009-02-20	0.05  TSE	redefine the Timervalues for 57k clock
*	2009-02-24	0.10  TSE	umstrukturierung und verbesserungen begonnen
*	2009-03-13	0.11  TSE	Vorberietungen zur Ersterprobung auf Controller
*
**************************************************************************/

// headerfiles from AVR-libc
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/twi.h>

#include "ports.h"
#include "functions.h"


#define F_CPU 7600000UL 	// controller clock

volatile unsigned char temp_57k = 0;

void init_all();



// Main program

int main(void) {

	init_all();

	while(1) {
		RDS_hauptprog();
	}
	return 0;
}

void init_all() {
	RDS_init();

	TIMER_init();

	// alle Initialisierungen abgeschlossen -> Status-LED an
	STAT_LED_DDR |= (1<<STAT_LED_PIN);
	STAT_LED_PORT &= (1<<STAT_LED_PIN);

	sei();
}

/**************************************************
* ISR: TIMER1_COMPA_vect
* Verhalten:	ISR welche beim erreichen des Timerwertes aufgerufen wird
* Parameter:	keine
* Rueckgabe:	keine
***************************************************/
ISR(TIMER1_COMPA_vect) {
	RDS_bitausgabe();

	if (OCR1A != 66) {
		OCR1A = 66;
	} else if (temp_57k == 3) {
		OCR1A = 65;
		temp_57k = 0;
	}
	temp_57k++;
}
